package com.gin.kotlin.no_gay_alliance.fragment.main.me.item

import android.os.Bundle
import android.util.Log
import com.gin.kotlin.no_gay_alliance.app.App
import com.gin.kotlin.no_gay_alliance.argument.ItemArgument
import com.gin.kotlin.no_gay_alliance.provider.ngaphp.ItemInventoryProvider
import com.gin.nga.enums.param.ItemType
import com.gin.nga.enums.param.ItemUseArg
import com.gin.nga.enums.param.ItemUseType
import com.gin.nga.response.item.ItemInfo

class ItemInventoryFragment : AbstractItemFragment() {
    override fun provider() = ItemInventoryProvider.getInstance()

    override fun onClickItem(itemInfo: ItemInfo) {
        Log.i(TAG, "点击库存中的道具: ${itemInfo.typeInfo?.name}")
        val id = itemInfo.id!!.toInt()
        val api = App.INSTANCE.ngaApi.itemApi

        when (itemInfo.type) {
            // 激活码 对人使用，如果参数中未提供用户id，弹窗提示输入
            ItemType.ACTIVATION_CODE -> obtainUserId { useToUser(id, it) }
            // 对自己使用
            ItemType.MEDAL -> obtainUserId(App.INSTANCE.account.userId) { useToUser(id, it) }
            // 对人使用，如果参数中未提供用户id，弹窗提示输入
            ItemType.TO_USER -> obtainUserId { useToUser(id, it) }
            // 对贴使用，如果参数中未提供主题id，弹窗提示输入
            ItemType.TO_REPLY -> obtainTopicId { topicId, replyId -> api.use(id, ItemUseType.USE_INVENTORY, ItemUseArg(topicId, replyId)).enqueue(this) }
            else -> handler?.toast("未开发功能")
        }
    }

    /**
     * 对用户使用库存中的道具
     * @param id 道具ID
     * @param userId Long
     */
    private fun useToUser(id: Int, userId: Long) = App.INSTANCE.ngaApi.itemApi.use(id, ItemUseType.USE_INVENTORY, ItemUseArg(userId)).enqueue(this)

    companion object {
        fun newInstance(itemArgument: ItemArgument): ItemInventoryFragment {
            val args = Bundle()
            args.putParcelable(ItemArgument::class.java.simpleName, itemArgument)
            val fragment = ItemInventoryFragment()
            fragment.arguments = args
            return fragment
        }
    }

}